from mcp.server.fastmcp import FastMCP
from html_to_img import html_to_img
from html_to_url import html_to_url


mcp = FastMCP(host='0.0.0.0', port=9876)


@mcp.tool()
async def html2img(html_content: str) -> str:
    """HTMT网页截图：在Chrome浏览器中运行HTML代码，将运行界面截图为图像文件，然后以MarkDown图像超链接的形式返回给调用者
    :param html_content: 单页面HTML网页代码（可以包含Javascript等动态代码）字符串，必须使用XML的 <![CDATA[ ... ]]> 区块形式对HTML代码字符串进行包裹；HTML代码中字符串中用到英文引号的地方必须使用单引号而不得使用双引号。
    :return: MarkDown格式的图像超链接字符串，形如： ![](https://...)，其中URL是一个没有主机名只有路径名的相对地址。大模型在收到该返回值后应直接原封不动返回给用户，不得自作主张做别的修改，也不得再添加其他任何代码包裹。
    """
    return html_to_img(html_content)


@mcp.tool()
async def html2url(html_content: str) -> str:
    """HTMT网页部署：将HTML代码部署至服务器，然后将部署后的网页URL以HTML超链接的形式返回给调用者
    :param html_content: 单页面HTML网页代码（可以包含Javascript等动态代码）字符串，必须使用XML的 <![CDATA[ ... ]]> 区块形式对HTML代码字符串进行包裹；HTML代码中字符串中用到英文引号的地方必须使用单引号而不得使用双引号。
    :return: HTML超链接字符串，其中URL是一个没有主机名只有路径名的相对地址。大模型在收到该返回值后应直接原封不动返回给用户，不得自作主张做别的修改，也不得再添加其他任何代码包裹。
    """
    return html_to_url(html_content)



if __name__ == '__main__':
    mcp.run(transport='streamable-http')
